home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / go32 / fs / manual < prev    next >
Text File  |  1995-03-23  |  30KB  |  748 lines

  1. ===============================================================================
  2.                           Ladybug version 1.02
  3. ===============================================================================
  4.  
  5. -------------------------------------------------------------------------------
  6. 1. Introduction                               
  7.  
  8. Derived from Morten Welinder's Sally Full Screen Debugger version 0.91a,
  9. Ladybug is an alternative tool for debugging 32-bit programs running under
  10. go32.
  11.  
  12. Ladybug and this manual are distributed under the terms of the 
  13. GNU General Public License as specified in the files "fullscr.c" and 
  14. "copying".  You should have received a copy of the GNU General Public 
  15. License together with Ladybug.
  16.  
  17. Ladybug comes with absolutely no warranty, expressed or implied.
  18. Use it at your own risk.  If you discover any bugs in Ladybug,
  19. please report them to:
  20.  
  21.         Long Doan
  22.         ld@netrix.com
  23.  
  24. **** IMPORTANT ******
  25. If the target program being debugged includes a file with a .sym extension,
  26. please read sections 2 and 3.
  27.  
  28. -------------------------------------------------------------------------------
  29. 1.1 Hardware
  30.  
  31. Ladybug has been tested under the following conditions only, but I
  32. expect no problems in other environments except as noted below:
  33.  
  34.   - Cpu:
  35.     + 486 DX2 66
  36.     + 386 SX (without fpu, with or without emulator.)
  37.   - Display:
  38.     + Color SVGA card/monitor, text mode.
  39.     + CGA card, Yellow/Black CGA monitor.
  40.     + VT100 terminals
  41.     + HP Apollo Workstation's display
  42.     + Sun SparcStation 5's display
  43.   - Remote debugging terminals:
  44.     + VT100
  45.     + PC's emulators (Procomm Plus, Telemate)
  46.     + HP Apollo's emulator (emt)
  47.     + Sun SparcStation 5's emulator (tip)
  48.   - Memory mode:
  49.     + Vcpi mode of the extender.
  50.     + Raw mode.
  51.     + XMS mode.
  52.  
  53. Ladybug has also been tested on programs of various sizes, from
  54. a few KB in size (with no symbols) to programs over 10MB in size (with
  55. more than 15000 symbols).
  56.  
  57. Some features of Ladybug are NOT DPMI (DOS Protected Mode Interface)
  58. compatible and should not be used under DPMI. 
  59.  
  60. -------------------------------------------------------------------------------
  61. 1.2 Display modes
  62.  
  63. Ladybug works with all text modes having at least 80 columns and 24
  64. rows.  ANSI.SYS is not required to run Ladybug, because Ladybug
  65. writes directly to video memory, and therefore does not work in graphic
  66. modes.  The go32 -topline option should not be used when running the
  67. debugger because then the display will not look pretty.
  68.  
  69. -------------------------------------------------------------------------------
  70. 1.3 Installation
  71.  
  72. NOTE: $DJGPP means your djgpp directory, for example, C:\DJGPP.
  73.  
  74.   - In the $DJGPP directory, unzip the file ldgb100.zip, like so:
  75.     (for pkzip, the invocation is pkunzip -d -o ldbg100).  Be sure
  76.     your unzip utility preserves the directory information stored
  77.     in the zip file.
  78.  
  79.   - Copy the files ladybug and ladydpmi from $DJGPP/go32/fs to
  80.     $DJGPP/bin.
  81.  
  82.   - IMPORTANT: If this is the FIRST time you are using Ladybug version
  83.     1.00, make sure that you read Sections 2 and 3 of this document
  84.     before continuing!!!!
  85.  
  86.   - After setting up the LDBG environment variable (as outlined in
  87.     Sections 2 and 3), reboot your computer.
  88.  
  89. 2. Environment
  90.  
  91. Ladybug uses a environment variable named LDBG.  The syntax for
  92. setting this environment variable is as follows:
  93.  
  94. set LDBG=value [value ...]
  95.  
  96. where value can be one of:
  97.  
  98. value                 meaning
  99. ---------------------------------------------------------------
  100. oldgo32               The current go32 does not support remote
  101.                       debugging.  Don't check for the remote
  102.                       debugging command line switch.
  103. remote <com_num>      Use com port number <com_num> to do remote
  104.                       debugging.  <com_num> is a number from 1 to 4.
  105. sympath <path>        Use <path> as the path to the symbol file.
  106.                       The default path is the path to the program
  107.                       being debugged.
  108. symname <name>        Use <name> for symbol file.  The default is
  109.                       the name of the program being debugged.
  110. symext <ext>          Use <ext> as symbol file's extension. 
  111.                       The default extension is ".sym".
  112. startup <file>        Use the startup file <file>. The default is
  113.                       /go32/ldbg.rc
  114.  
  115. The syntax in the startup file:
  116.   keyword switch value [switch value...]
  117. Where keyword can be:
  118.  
  119. #            Beginning of a comment, must be at the beginning of a
  120.              line.
  121. bre          Breakpoint.
  122. reg          Debug register.
  123. pa           Perfomance Analyzer settings.
  124. pane         Pane infomation.
  125.  
  126.   Syntax for breakpoint:
  127.   bre -class <class> -type <type> -at <addr> -length <len> [-count
  128.       <count>] [-condition <cond>]
  129.   Where:
  130.   class  (normal, count_down, conditional) is the class of the
  131.          breakpoint.
  132.   type   (code, data_write, data_read) is the type of the breakpoint.
  133.   addr   (expression with no white space) is the location of the
  134.          breakpoint.
  135.   len    (1, 2, 4) is the length of the breakpoint.
  136.   count  (number) is the countdown number (only used for count_down
  137.          breakpoints.)
  138.   cond   (expression) is the condition for the breakpoint. It MUST be
  139.          at the end of the line.
  140.  
  141.   Syntax for registers:
  142.   reg -number <regnum> -value <exp>
  143.   Where:
  144.   regnum (0..A..Z..a..z) is the register to be used.
  145.   exp    (expression) is the value to be stored to the register.
  146.  
  147.   Syntax for performace analyzer settings:
  148.   Where:
  149.   pa -start <exp> -stop <exp>
  150.   exp    (expression) is the address of the beginning/ending of
  151.          the area to be analyzed.
  152.  
  153.   Syntax for pane information:
  154.   pane -toplines <num> -top_left_cols <num> -top_mid_cols <num>
  155.        -bot_left_cols <num>
  156.   Where:
  157.   num    Number of rows/columns to be used for each region.
  158.  
  159. NOTE: This is also the syntax in which the debugger's context is saved.
  160.  
  161. If you are not using a version of go32 that supports remote debugging
  162. (the only known versions that do are 1.11maint5n and 1.12maint3)
  163. or if you are not sure if your copy of go32 supports this feature,
  164. add the following into your autoexec.bat file:
  165.  
  166.   set LDBG=oldgo32
  167.  
  168. If you wish to do remote debugging with LDBG set to oldgo32, then
  169. add the following to your autoexec.bat file:
  170.  
  171.   set LDBG=oldgo32 remote <com_num>
  172.  
  173. where <com_num> is the com port number as described above.
  174.  
  175. EXAMPLE:
  176.  
  177.   set LDBG=oldgo32 sympath /djgpp/syms symext sym
  178.  
  179. which tells Ladybug to use the file
  180.  
  181.   /djgpp/syms/<program_name>.sym
  182.  
  183. as the symbol file for
  184.  
  185.   <program_name>.<whatever>
  186.  
  187. -------------------------------------------------------------------------------
  188. 3. Symbol file
  189.  
  190. In order to conserve memory, Ladybug stores symbol information in
  191. a .sym file and reads from the file as necessary.  The name of the
  192. file is the same as the name of the program being debugged,
  193. e.g. program.exe will typically accompany a program.sym file 
  194. which contains symbol information.
  195.  
  196. Ladybug uses timestamp and size information in order to determine if
  197. the .sym file contains the actual symbol information belonging to the
  198. target program being debugged.  However, Ladybug WILL be fooled if
  199. the number of symbols in the target program corresponds to the
  200. number of symbols in the .sym file AND the timestamp of the program
  201. file corresponds to the information stored in the .sym file.  This
  202. is unlikely, but be careful when "touching" the program file.  To
  203. be safe, delete the .sym file every time you recompile.
  204.  
  205. If reading the symbol file takes too long, defragment the file and
  206. restart Ladybug.
  207.  
  208. To change the symbol file name, see Section 2 above.
  209.  
  210. Any file (other than the symbol file itself) that has the same path,
  211. name, and extension as the symbol file WILL be OVERWRITTEN,
  212. therefore it is probably a good idea to set the symbol path to a
  213. seperate symbol directory (like /djgpp/syms) as outlined in Section 2
  214. above.
  215.  
  216. Ladybug will not delete the symbol file for you.  If you need more
  217. disk space, delete it yourself.
  218.  
  219. -------------------------------------------------------------------------------
  220. 4. New features (new with respect to fsdb091a):
  221.  - Help and Module panes.
  222.  - Remote debugging support, as follows:
  223.      go32 -d ladybug -<device> <program> [args]
  224.      where <device> is one of the following:
  225.          com_one
  226.          com_two
  227.          com_three
  228.          com_four
  229.      or, inside Ladybug, choose <File><Redirect IO> and then
  230.      enter the device name.  The device name can be one of the
  231.      devices above, or it can be
  232.          con
  233.      for local debugging mode.
  234.    (Note that the command line options override
  235.    environment variable settings.)
  236.  - Menus and dialog boxes to simplify user input.
  237.  - External data structure support (activated through the Data pane)
  238.    to allow users to display data in customized format.
  239.      This feature is application-specific, and xsupport.c must be 
  240.      implemented according to the project being debugged.
  241.  - Program animation (running by continuously single-stepping
  242.    at a user-specified speed).
  243.  - Performance analyzer.
  244.  - Access to PC IO ports.
  245.  - Resizable panes/screens.
  246.  - 80387/emulation checking to prevent the user from accessing
  247.    a non-existent 80387 via the NPX pane.
  248.  - Ability to save/load the debugger context, including breakpoints
  249.    and other settings.
  250.  - Address registers for placing "bookmarks" in code or data.
  251.  - A minibuffer for input/output not requiring dialogue boxes.
  252.  - Undo commands.
  253.  - Horizontal scrolling within panes.
  254.  - Memory search.
  255.  
  256. ===============================================================================
  257. 5. Enhancements
  258.  - Conditional/count-down data and code breakpoints.
  259.  - New expression parser that allows the use of parentheses and
  260.    memory references.
  261.  - New background and colors (in color mode only!)
  262.  - The active window is now highlighed by a double frame (in local mode)
  263.    and by a different type of frame in remote mode..
  264.  - Less memory usage.
  265.  
  266. ===============================================================================
  267. 6. Key bindings
  268.  
  269.  Since this version of Ladybug is primarily intended
  270.  for use by those whose primary operating system experience
  271.  is with unix, the key bindings have been redefined to
  272.  closely correspond with Gnu Emacs key bindings.  Emacs is
  273.  an editor which is commonly used on unix systems.
  274.  
  275.  An initial attempt was made to use keystrokes from the
  276.  more-prevalent vi editor, but the resulting interface
  277.  was cumbersome.  It quickly became clear that Emacs was
  278.  better suited to the job.  Thus is the vi/emacs war
  279.  perpetuated.
  280.  
  281. KEY ABBREVIATIONS USED IN THIS DOCUMENT:
  282.  
  283.  C      when used as a hyphenated prefix, is the control.
  284.         key.  "C-c" means to press the control key
  285.         simultaneously with the "c" key.
  286.  M      when used as a hyphenated prefix, is the meta key.
  287.         Currently, M is the same as ESC (the Escape key).
  288.         "M-c" means to press the meta key followed by the
  289.         "c" key.
  290.  S      when used as a hyphenated prefix, is the shift key.
  291.         "S-c" means to press the shift key simultaneously
  292.         with the "c" key.
  293.  ESC    is the escape key.
  294.  CR     is the return key.
  295.  TAB    is the tab key.
  296.  DEL    is the delete key.
  297.  BS     is the backspace key.
  298.  LT     is the left arrow key.
  299.  RT     is the right arrow key.
  300.  UP     is the up arrow key.
  301.  DN     is the down arrow key.
  302.  PGUP   is the page up key.
  303.  PGDN   is the page down key.
  304.  HOME   is the home key.
  305.  END    is the end key.
  306.  
  307.  <n>    denotes any string of numerals.
  308.  <x>    denotes a hexadecimal number, i.e. a string of
  309.         numerals prefixed with 0x.
  310.  <c>    denotes one character.
  311.  <sym>  denotes any string of alphanumeric characters
  312.  <exp>  denotes any C expression, with limitations, as
  313.         specified in the manual section on expressions.
  314.  
  315. GENERAL NOTES:
  316.  C-c  is used to prefix commands which would change the
  317.       debugger state beyond the reach of an easy undo
  318.       command (and sometimes beyond any possible undo).
  319.  
  320. DEFINITIONS OF USER INTERFACE ELEMENTS:
  321.  
  322.  Window        General term for a user interface element.
  323.  Menu          Horizontal list of user-selectable items.
  324.  Pulldown      Vertical list of user-selectable items.
  325.  Pane          Window in which user input is possible but
  326.                not required.
  327.  Dialog Box    Window requiring user input.
  328.  Minibuffer    One-line window used for user input and
  329.                debugger status messages.
  330.  
  331. ----------------------------------------------------------
  332. GLOBAL KEY BINDINGS:
  333.  
  334.  C-x C-c     Quit debugger.  You will be prompted first.
  335.  C-x C-v     Save or load debugger context.
  336.  C-r         Run program.
  337.  C-h         Make Help pane active.
  338.  BS          Make Help pane active.
  339.  C-x C-w     Write active pane contents to a file.  Only
  340.              the visible portion of the pane is saved.
  341.  C-x C-f     Display contents of log file.
  342.  C-x m       Toggle between color/monochrome mode.
  343.  C-x C-e     Evaluate an expression and display result
  344.              in the minibuffer.
  345.  C-z         Show program output.  Press any key to return
  346.              to the debugger.
  347.  C-l         Redraw the screen.
  348.  ESC C-p <c> Goto pane whose name begins with <c>.
  349.  C-x C-o     Toggle between insert/overstrike mode.
  350.  
  351. ----------------------------------------------------------
  352. MAIN MENU:
  353.  
  354.  ESC ESC     Quit main menu, go to previously active pane.
  355.  C-g         Quit main menu, go to previously active pane.
  356.  f           Select File pulldown.
  357.  p           Select Pane pulldown.
  358.  l           Select Local pulldown.
  359.  m           Select Miscellaneous pulldown.
  360.  h           Select Help pulldown.
  361.  CR          Select pulldown of highlighted choice.
  362.  DN          Select pulldown of highlighted choice.
  363.  C-n         Select pulldown of highlighted choice.
  364.  C-f         Highlight next choice on main menu.
  365.  TAB         Highlight next choice on main menu.
  366.  RT          Highlight next choice on main menu.
  367.  C-b         Highlight previous choice on main menu.
  368.  S-TAB       Highlight previous choice on main menu.
  369.  LT          Highlight previous choice on main menu.
  370.  
  371. ----------------------------------------------------------
  372. PULLDOWNS:
  373.  
  374.  ESC ESC     Go to main menu.
  375.  CR          Select currently highlighted pulldown item.
  376.  C-n         Highlight next pulldown item.
  377.  DN          Highlight next pulldown item.
  378.  C-p         Highlight previous pulldown item.
  379.  UP          Highlight previous pulldown item.
  380.  C-f         Show pulldown of next main menu choice.
  381.  RT          Show pulldown of next main menu choice.
  382.  TAB         Show pulldown of next main menu choice.
  383.  C-b         Show pulldown of previous main menu choice.
  384.  LT          Show pulldown of previous main menu choice.
  385.  S-TAB       Show pulldown of previous main menu choice.
  386.  
  387. ----------------------------------------------------------
  388. PANES:
  389.  
  390.  ESC ESC     Go to main menu.
  391.  C-x o       Go forward one pane.
  392.  TAB         Go forward one pane.
  393.  S-TAB       Go backward one pane.
  394.  C-x C-x     Go to previous pane (and again to return).
  395.  C-x ^       Make current pane taller by one line.
  396.  C-x }       Make current pane wider by one line.
  397.  C-x >       Scroll text right (show more of the left).
  398.  C-x <       Scroll text left (show more of the right).
  399.  C-f         Move forward one line/byte/halfword/fullword.
  400.  RT          Move forward one line/byte/halfword/fullword.
  401.  C-b         Move backward one line/byte/halfword/fullword.
  402.  LT          Move backward one line/byte/halfword/fullword.
  403.  C-n         Move forward one line.
  404.  DN          Move forward one line.
  405.  C-p         Move backward one line.
  406.  UP          Move backward one line.
  407.  C-v         Move forward one page.
  408.  PGDN        Move forward one page.
  409.  M-v         Move backward one page.
  410.  PGUP        Move backward one page.
  411.  M-<         Move to beginning of pane.
  412.  HOME        Move to beginning of pane.
  413.  M->         Move to end of pane.
  414.  END         Move to end of pane.
  415.  
  416. ----------------------------------------------------------
  417. DIALOG BOXES:
  418.  
  419.  ESC ESC     Quit dialog box and discard any changes.
  420.  C-g         Quit dialog box and discard any changes.
  421.  TAB         Move to next field, if applicable.
  422.  C-n         Move to next field, if applicable.
  423.  DN          Move to next field, if applicable.
  424.  S-TAB       Move to previous field, if applicable.
  425.  C-p         Move to previous field, if applicable.
  426.  UP          Move to previous field, if applicable.
  427.  CR          Select highlighted item, if applicable.
  428.  C-f         Move forward one character, if applicable.
  429.  RT          Move forward one character, if applicable.
  430.  C-b         Move backward one character, if applicable.
  431.  LT          Move backward one character, if applicable.
  432.  DEL         Delete character left of cursor.
  433.  C-d         Delete character under cursor.
  434.  CR          Accept input and
  435.                - go to next field (if not on a button), or
  436.                - take action specified by button.
  437.  
  438. ----------------------------------------------------------
  439. MINBUFFER:
  440.  
  441.  ESC ESC     Quit minibuffer and discard any changes.
  442.  C-g         Quit minibuffer and discard any changes.
  443.  C-f         Move forward one character, if applicable.
  444.  RT          Move forward one character, if applicable.
  445.  C-b         Move backward one character, if applicable.
  446.  LT          Move backward one character, if applicable.
  447.  DEL         Delete character left of cursor.
  448.  C-d         Delete character under cursor.
  449.  CR          Accept input.
  450.  
  451. ==========================================================
  452.  PANE-SPECIFIC HELP
  453. ==========================================================
  454. ----------------------------------------------------------
  455. HELP PANE:
  456.  
  457.  CR          Make code pane active.
  458.  C-g         Make code pane active.
  459.  
  460. ----------------------------------------------------------
  461. CODE PANE:
  462.  
  463.  s           Single step, stepping over function calls.
  464.  S           Single step, stepping into function calls.
  465.  C-c a       Animate - run program by single stepping at
  466.              a user-specified speed.
  467.  b           Toggle breakpoint on/off at current location.
  468.  e           Edit breakpoint via dialog box.
  469.              Breakpoint particulars are:
  470.                Address   - breakpoint location.
  471.                Type      - 0 == Code breakpoint.
  472.                            1 == Data write breakpoint.
  473.                            2 == Data read breakpoint.
  474.                Class     - 0 == Always enabled.
  475.                            1 == Breakpoint enabled only after
  476.                                 being reached <count> times.
  477.                            2 == Breakpoint enabled only after
  478.                                 <condition> is true (nonzero).
  479.                Count     - Number of hits before a class 1
  480.                            breakpoint activates.
  481.                Condition - Condition to be met before a
  482.                            class 2 breakpoint activates.
  483.                            The condition can be almost any
  484.                            C expression.  For more info on
  485.                            allowable expressions, see the
  486.                            manual section on expressions.
  487.                            Two examples are:
  488. _Odd_num >> 3 == 1 && (_Even_num >> _Shift_val || _Test)
  489. (([%esi + %eax * 4] & 0x5fff) >> 12) & 0x0f == 4
  490.                Size      - The Size parameter allows you
  491.                            to specify the maximum size to
  492.                            be used during evaluation of
  493.                            expressions.
  494.  C-c t       Trace to current address.  Same as toggling
  495.              breakpoint, then running program.
  496.  <n> CR      Disassemble and display memory at specified
  497.              decimal address.
  498.  <x> CR      Disassemble and display memory at specified
  499.              hexadecimal address.
  500.  _<sym> CR   Disassemble and display memory at address
  501.              specified by symbol <sym>.
  502.  %<sym> CR   Disassemble and display memory at address
  503.              specified by value in register denoted by
  504.              symbol <sym>.
  505.  <exp> CR    Disassemble and display memory at address
  506.              specified by value of expression <exp>.
  507.  i           Disassemble and display memory at address
  508.              specified by EIP (current run location).
  509.  C-c i       Set EIP to address of currently highlighted
  510.              instruction.
  511.  p           Modify performance analyzer settings.
  512.  C-c p       Start performance analyzer and run program
  513.              (if performance analyzer timer has been set).
  514.  M-b         Move pane's origin left by one byte.
  515.  M-f         Move pane's origin right by one byte.
  516.  C-x / <c>   Save highlighted location in debugger code
  517.              pane register <c>.
  518.  C-x j <c>   Disassemble and display memory at location
  519.              saved in debugger code pane register <c>.
  520.  
  521. ----------------------------------------------------------
  522. DATA PANE:
  523.  
  524.  w           Toggle data write breakpoint on/off.
  525.  r           Toggle data read/write breakpoint on/off.
  526.  e           Edit data read or read/write breakpoint.
  527.              Breakpoint particulars are:
  528.                Address   - breakpoint location.
  529.                Type      - 0 == Code breakpoint.
  530.                            1 == Data write breakpoint.
  531.                            2 == Data read breakpoint.
  532.                Class     - 0 == Always enabled.
  533.                            1 == Breakpoint enabled only after
  534.                                 being reached <count> times.
  535.                            2 == Breakpoint enabled only after
  536.                                 <condition> is true (nonzero).
  537.                Count     - Number of hits before a class 1
  538.                            breakpoint activates.
  539.                Condition - Condition to be met before a
  540.                            class 2 breakpoint activates.
  541.                            The condition can be almost any
  542.                            C expression.  For more info on
  543.                            allowable expressions, see the
  544.                            manual section on expressions.
  545.                            Two examples are:
  546. _Odd_num >> 3 == 1 && (_Even_num >> _Shift_val || _Test)
  547. (([%esi + %eax * 4] & 0x5fff) >> 12) & 0x0f == 4
  548.                Size      - The Size parameter allows you
  549.                            to specify the maximum size to
  550.                            be used during evaluation of
  551.                            expressions.
  552.  b           Display data in byte format.
  553.  h           Display data in halfword (two byte) format.
  554.  f           Display data in fullword (four byte) format.
  555.  <n> CR      Display memory at specified decimal address.
  556.  <x> CR      Display memory at specified hexadecimal
  557.              address.
  558.  _<sym> CR   Display memory at address specified by
  559.              symbol <sym>.
  560.  %<sym> CR   Display memory at address specified by value
  561.              in register denoted by symbol <sym>.
  562.  <exp> CR    Display memory at address specified by value
  563.              of expression <exp>.
  564.  i           Display memory at address specified by EIP
  565.              (current run location).
  566.  s           Display memory at address specified by ESP
  567.              (current stack pointer).
  568.  *           Dereference currently highlighted value.
  569.  @           Retrace steps after a '*' command.  Up to
  570.              five (5) steps back are allowed.
  571.  n           Display data in customized format.
  572.  p           Input/output from/to ports as follows:
  573.                Size - 1 = byte, 2 = word, 3 = dword
  574.                Port - port to access
  575.                Data - data to write
  576.                <In>  button - input from port
  577.                <Out> button - output to port
  578.  M-b         Move pane's origin left by one byte.
  579.  M-f         Move pane's origin right by one byte.
  580.  C-c m       Modify memory at cursor.
  581.  C-c u       Undo last memory modification.  No more than
  582.              five (5) modifications can be undone.
  583.  C-c s       Search memory.
  584.  C-x / <c>   Save highlighted location in debugger data
  585.              pane register <c>.
  586.  C-x j <c>   Display memory at location saved in
  587.              debugger data pane register <c>.
  588.  
  589. ----------------------------------------------------------
  590. REGISTERS PANE:
  591.  
  592.  C-c m       Modify register at cursor.
  593.  C-c u       Undo last register modification.  No more
  594.              than five (5) modifications can be undone.
  595.  
  596. ----------------------------------------------------------
  597. FLAGS PANE:
  598.  
  599.  All commands accessed via local menu.
  600.  
  601. ----------------------------------------------------------
  602. BREAKPOINT PANE:
  603.  
  604.  CR          Goto location of currently highlighted
  605.              breakpoint, in code or data pane, as
  606.              appropriate.
  607.  DEL         Delete currently highlighted breakpoint.
  608.  C-d         Delete currently highlighted breakpoint.
  609.  C-e         Edit currently highlighted breakpoint.
  610.  C-k         Delete from currently highlighted breakpoint
  611.              up to the last breakpoint.
  612.  C-y         Restore from previous deletion.  No more
  613.              than five (5) deletions can be undone.
  614.  
  615. ----------------------------------------------------------
  616. WHEREIS PANE:
  617.  
  618.  CR          Display data/code at address represented by
  619.              currently highlighted symbol.
  620.  _<sym> CR   Find <sym> in symbol table
  621.              Permissible wildcards are:
  622.                ? - Matches one character
  623.                * - Matches any number of characters
  624.  
  625. ----------------------------------------------------------
  626. MODULE PANE:
  627.  
  628.  CR          Prompt for a line number, disassemble and
  629.              display code at that location.
  630.  
  631. ----------------------------------------------------------
  632. NPX PANE: 
  633.  
  634.  C-c e       Empty register.    
  635.  C-c n       Negate register contents.
  636.  C-c z       Zero register.
  637.  C-c m       Modify register contents.
  638.  C-c u       Undo last register modification.  No more
  639.              than five (5) modifications can be undone.
  640.  
  641. ----------------------------------------------------------
  642. PERFORMANCE ANALYZER DATA VIEWER:
  643.  
  644.  C-x C-w     Log performance analyzer results to file.
  645.  
  646. ----------------------------------------------------------
  647. STACK PANE:
  648.  
  649.  CR          Select highlighted location and display
  650.              in data pane.
  651.  
  652. ----------------------------------------------------------
  653. INFO PANE:
  654.  
  655.  No commands available.
  656.  
  657. ==========================================================
  658. SYNTAX AND VALUES
  659. ==========================================================
  660. ----------------------------------------------------------
  661. C EXPRESSIONS ALLOWED:
  662.  
  663.    Syntax:
  664.      <expr>  = <l_exp> [<l_op> <l_exp> ...]
  665.      <l_exp> = <a_exp> [<r_op> <a_exp> ...] | 
  666.                (<l_exp>) | !<l_exp>
  667.      <a_exp> = <a_exp>|<identifier> [<a_op> 
  668.                <a_exp>|<identifier> ...] | (<a_exp>)
  669.      <identifier> = <identifier> | <[<a_exp>]><size>
  670.    where
  671.      <l_exp>      is a logical expression.
  672.      <l_op>       is one of: && ||
  673.      <a_exp>      is an arithmetic expression
  674.      <r_op>       is one of: < <= == != >= >
  675.      <a_op>       is one of: + - * / >> << & | ! ~
  676.      <identifier> is an identifiler (a symbol, register) 
  677.                   a [decimal | hexidecimal | octal] number,
  678.                   or a memory reference.
  679.  
  680.      * <identifier> can be a global variable name,
  681.        symbolic constant, constant value, register name,
  682.        or memory reference (i.e. an expression which
  683.        evaluates to a memory location).
  684.      * All register names must begin with a '%' (percent) 
  685.        character. 
  686.      * All memory references have the structure: 
  687.          [<address expression>]size 
  688.        where size can be b, h, f, or nothing.
  689.        b: 1 byte. h: 2 bytes. f: 4 bytes. Any other
  690.        character immediately following the right square 
  691.        bracket (]) and is not one of the above characters
  692.        will be interpreted as part of the expression.
  693.        By default (if neither b, h, or f follows the
  694.        right square bracket,) the reference will read
  695.        4 bytes from memory.
  696.      * When constructing expressions, be aware that
  697.        the modulo (%) operator is not allowed, since
  698.        it conficts with the register naming scheme.
  699.        To perform a modulo, use divide (/) and
  700.        subtract (-): (a % b) == (a - a / b)
  701.      * When constructing expressions, be wary
  702.        of possible overflow (the debugger uses
  703.        32 bit arithmetic to evaluate expressions).
  704.  
  705.    Examples of valid expressions: 
  706.  
  707.      _Odd_num >> 3 == 1 && (_Even_num >> _Shift_val || _Test)
  708.      (([%esi + %eax * 4] & 0x5fff) >> 12) & 0x0f == 4
  709.  
  710. ----------------------------------------------------------
  711. REMOTE DEBUGGING DEVICES
  712.   
  713.     con       : console. 
  714.     com_one   : COM1. 
  715.     com_two   : COM2. 
  716.     com_three : COM3. 
  717.     com_four  : COM4. 
  718.  
  719. -------------------------------------------------------------------------------
  720. 7. Rebuilding instructions:
  721.  
  722.   In the same directory as the source files, type "make", or whatever
  723.   your make utility name is.
  724.  
  725. 8. Troubleshooting
  726.  
  727.   8.1 The debugger appears to hang when startup (but numlock/caplock
  728.       still works.)
  729.  
  730.       Solution:
  731.         1. Try adding "oldgo32" (without the quotation marks) to your
  732.            ldbg environment variable.
  733.  
  734.   8.2 The debugger is slow
  735.  
  736.       Solution:
  737.         1. Defrag your hard drive.
  738.         2. Use a disk cache.
  739.  
  740.   8.3 The debugger displays wrong/mismatched symbols
  741.  
  742.       Solution:
  743.  
  744.         1. Delete the symbol file (see section 3) and restart the
  745.            debugger.
  746. ===============================================================================
  747.  
  748.